const AC_GAME_OBJECT  = [];

export class AcGameObject{//基类
    constructor(){//表示在(x，y)的位置画一个固定宽高的图片
        AC_GAME_OBJECT.push(this);
        this.timedelta = 0;
        this.has_called_start = false;

        //额外属性
        this.isDestroy= false;//是否被摧毁(坦克，墙)
        this.name = this.getName();//起个默认的名字
    }


    getName(){
        return "base class";
    }
    isdestroy(){//默认没被摧毁，调用这个函数表示摧毁了
        this.isDestroy = true;
    }

    start(){//只执行一次

    }
    update(){//每一帧执行一次 ，除了第一次

    }
    on_destroy(){ //删除之前执行

    }
    destroy(){
        this.on_destroy(); //删之前调用一下

        for (let i in AC_GAME_OBJECT){
            const obj = AC_GAME_OBJECT[i];
            if (obj === this) {
                AC_GAME_OBJECT.splice(i,1);
                break;
            }
        }
    }
}
let last_timestamp; //上一次执行的时刻
const step = timesamp => {
    for (let obj of AC_GAME_OBJECT){
        if(!obj.has_called_start){
            obj.has_called_start = true;
            obj.start();
        }else {
            obj.timedelta = timesamp - last_timestamp;
            obj.update();
        }
    }
    last_timestamp = timesamp;
    requestAnimationFrame(step)
}

requestAnimationFrame(step)
